/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.mowa.biblioteca.controller;

import com.mowa.biblioteca.model.Libro;
import com.mowa.biblioteca.model.Usuario;
import com.mowa.biblioteca.service.UsuarioService;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

/**
 *
 * @author Osamu
 */

@Controller
public class UsuarioController {
   
    private  UsuarioService usuarioService;

    @Autowired
    public  UsuarioController(UsuarioService usuarioService){
        this.usuarioService = usuarioService;
    }
      
    @RequestMapping(method=RequestMethod.GET)
    public String getCreateForm(Model model) {
            model.addAttribute(new Usuario());
            return "mantUsuario";
    }

    @RequestMapping(value="/usuarios.htm", method=RequestMethod.GET)
    public ModelAndView listaUsuarios(Model model, @ModelAttribute("usuario") Usuario u){

        ModelAndView mav = new ModelAndView("usuarios");
        Usuario user = new Usuario();
        List<Usuario> usuarios = usuarioService.listarUsuarios(user);
        mav.addObject("listaUsuarios", usuarios);
        return mav;
    }

    @RequestMapping(value="/usuarios.htm", method=RequestMethod.POST) //
    public String filtrarLibros(Model model, @ModelAttribute("usuario") Usuario user) {

            List<Usuario> usuarios = usuarioService.listarUsuarios(user);
            model.addAttribute("listaUsuarios", usuarios);
            model.addAttribute("usuario", user);
           return "usuarios";
    }

    @RequestMapping(value = "/mantUsuario.htm", method = RequestMethod.GET)
    public @ModelAttribute("usuario")
    Usuario verUsuario(@RequestParam(value = "idusuario", required = false) Integer idusuario) {
        try {
                if (idusuario != null) {
                        Usuario libro = usuarioService.obtenerUsuario(idusuario);
                        return libro;
                }

            } catch (Exception e) {
                //throw e.getMessage(); //"mantUsuario";
            }
        return new Usuario();
    }

    @RequestMapping(value = "/mantUsuario_u.htm", method = RequestMethod.GET)
    public @ModelAttribute("usuario")
    Usuario verUsuarioU(@RequestParam(value = "idusuario", required = false) Integer idusuario) {
        try {
                if (idusuario != null) {
                        Usuario libro = usuarioService.obtenerUsuario(idusuario);
                        return libro;
                }

            } catch (Exception e) {
                //throw e.getMessage(); //"mantUsuario";
            }
        return new Usuario();
    }

    @RequestMapping(value="/mantUsuario.htm", method=RequestMethod.POST)
    public ModelAndView grabarUsuariox(Model model, @ModelAttribute("usuario") Usuario u,
             @RequestParam(value = "idusuario", required = false) Integer idusuario){

        ModelAndView mav = new ModelAndView("usuarios");
        u.setIdusuario(idusuario);
        usuarioService.grabarUsuario(u);
        List<Usuario> usuarios = usuarioService.listarUsuarios(new Usuario());
        mav.addObject("listaUsuarios", usuarios);
        model.addAttribute("usuario", new Usuario());
        return mav;
    }

    @RequestMapping(value = "/mantPassword.htm", method = RequestMethod.GET)
    public @ModelAttribute("usuario")
    Usuario verUsuarioPass(@RequestParam(value = "idusuario", required = false) Integer idusuario) {
        try {
                if (idusuario != null) {
                        Usuario libro = usuarioService.obtenerUsuario(idusuario);
                        return libro;
                }

            } catch (Exception e) {
                //throw e.getMessage(); //"mantUsuario";
            }
        return new Usuario();
    }

     @RequestMapping(value = "/mantPassword_u.htm", method = RequestMethod.GET)
    public @ModelAttribute("usuario")
    Usuario verUsuarioPassU(@RequestParam(value = "idusuario", required = false) Integer idusuario) {
        try {
                if (idusuario != null) {
                        Usuario libro = usuarioService.obtenerUsuario(idusuario);
                        return libro;
                }

            } catch (Exception e) {
                //throw e.getMessage(); //"mantUsuario";
            }
        return new Usuario();
    }

    @RequestMapping(value="/mantPassword.htm", method=RequestMethod.POST)
    public ModelAndView cambiarPassword(Model model, @ModelAttribute("usuario") Usuario u,
             @RequestParam(value = "idusuario", required = false) Integer idusuario){

        ModelAndView mav = new ModelAndView("usuarios");
        u.setIdusuario(idusuario);
        usuarioService.grabarUsuario(u);
        List<Usuario> usuarios = usuarioService.listarUsuarios(new Usuario());
        mav.addObject("listaUsuarios", usuarios);
        model.addAttribute("usuario", new Usuario());
        return mav;
    }

   
    @RequestMapping(value="/mantPassword_u.htm", method=RequestMethod.POST)
    public ModelAndView cambiarPasswordU(Model model, @ModelAttribute("usuario") Usuario u,
             @RequestParam(value = "idusuario", required = false) Integer idusuario){

        ModelAndView mav = new ModelAndView("usuarios");
        u.setIdusuario(idusuario);
        usuarioService.grabarUsuario(u);
        List<Usuario> usuarios = usuarioService.listarUsuarios(new Usuario());
        mav.addObject("listaUsuarios", usuarios);
        model.addAttribute("usuario", new Usuario());
        return mav;
    }

    @RequestMapping(value="/index.htm", method=RequestMethod.POST )
    public String validarUsuario(Model model, @ModelAttribute("usuario") Usuario user) {

        String mav ="index";

        List<Usuario> lista = usuarioService.obtenerUsuariologin(user);
        if (lista.size()>0) {
            if (lista.get(0).getAdministrador()==0) {

                
               // model.addAttribute("catalogo", lista);
                model.addAttribute("usuario", lista.get(0));
                mav ="redirect:catalogo.htm";
                }else{
                //model.addAttribute("libros", lista);
                model.addAttribute("usuario", new Libro());
                mav ="redirect:libros.htm";
            }
        }
        return mav;
    }

    @RequestMapping(value="/index.htm", method=RequestMethod.GET)
    public void index(Model model, @ModelAttribute("usuario") Usuario user) {
        model.addAttribute("usuario", new Usuario());
    }


}
